home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 49 / Amiga Format CD49 (2000-01-17)(Future Publishing)(GB)(Track 1 of 3)[!][issue 2000-02].iso / -serious- / graphics / amicad / arexx_english / analyse.amicad < prev    next >
Text File  |  1999-12-06  |  4KB  |  162 lines

  1. /* Choix du type d'analyse Spice */
  2.  
  3. options results     /* indispensable pour récupérer le résultat des macros */
  4.  
  5. signal on error     /* pour l'interception des erreurs */
  6. signal on syntax
  7.  
  8. 'TITLE("Recherche analyse existante..."):OBJECTS(-1)'
  9. objets=result
  10. objet_analyse=0
  11. analyse=''
  12. do i=1 to objets
  13.     'FINDOBJ('i',4,-1,-1)'; i=result
  14.     if i>0 then do
  15.     'READTEXT('i')'; t=result
  16.     if left(t,10)=".ANALYSE: " then do
  17.         analyse=substr(t,10)
  18.         objet_analyse=i
  19.         leave
  20.     end
  21.     end
  22.     else leave
  23. end
  24. if analyse~='' then do
  25.     if substr(analyse,1,3)="AC" then do
  26.     'REQUEST("Le type d''analyse actuel"+CHR(10)+"est le type AC"+CHR(10)+"Voulez-vous en changer?")'
  27.     if result=1 then analyse=''
  28.     else do
  29.         analyse=edition_analyse_AC(analyse)
  30.         if analyse='' then exit
  31.     end
  32.     end
  33.     else if substr(analyse,1,3)="DC" then do
  34.     'REQUEST("Le type d''analyse actuel"+CHR(10)+"est le type DC"+CHR(10)+"Voulez-vous en changer?")'
  35.     if result=1 then analyse=''
  36.     else do
  37.         analyse=edition_analyse_DC(analyse)
  38.         if analyse='' then exit
  39.     end
  40.     end
  41.     else if upper(substr(analyse,1,5))="TRAN" then do
  42.     'REQUEST("Le type d''analyse actuel"+CHR(10)+"est le type TRAN"+CHR(10)+"Voulez-vous en changer?")'
  43.     if result=1 then analyse=''
  44.     else do
  45.         analyse=edition_analyse_TRAN(analyse)
  46.         if analyse='' then exit
  47.     end
  48.     end
  49.     else do
  50.     'MESSAGE("Type d''analyse inconnu")'
  51.     exit
  52.     end
  53.     if analyse~="" then  'SAVEALL(-1):SETTEXT('objet_analyse',".ANALYSE: 'analyse'")'
  54. end
  55. if analyse='' then do
  56.     'SELECT("Type d''analyse à effectuer"+CHR(10)+"AC"+CHR(10)+"DC"+CHR(10)+"Transient")'
  57.     select
  58.     when result=1 then do
  59.         analyse=edition_analyse_AC("AC DEC/OCT/LIN 100 10 1000")
  60.     end
  61.     when result=2 then do
  62.         analyse=edition_analyse_DC("DC V 1V 10V 0.01V")
  63.     end
  64.     when result=3 then do
  65.         analyse=edition_analyse_TRAN("TRAN 0.01s 1s 0s")
  66.     end
  67.     otherwise
  68.         exit
  69.     end
  70.     if analyse='' then exit
  71.     if objet_analyse>0 then 'SAVEALL(-1):SETTEXT('objet_analyse',".ANALYSE: 'analyse'")'
  72.     else 'WRITE(".ANALYSE: 'analyse'",0,0):TITLE("Placez ce texte sur le document")'
  73. end
  74.  
  75. exit
  76.  
  77. edition_analyse_AC:
  78.     parse arg type variation nbre_pts freq_debut freq_fin
  79.     if type="AC" then do
  80.     'SELECT("Type de variation ('variation')"+CHR(10)+"Décade (DEC)"+CHR(10)+"Octave (OCT)"+CHR(10)+"Linéaire (LIN)")'
  81.     select
  82.         when result=1 then do
  83.         f="DEC "; v="par décade"
  84.         end
  85.         when result=2 then do
  86.         f="OCT "; v="par octave"
  87.         end
  88.         when result=3 then do
  89.         f="LIN "; v="de test"
  90.         end
  91.         otherwise do
  92.         return ''
  93.         end
  94.     end
  95.     'ASKNUM("Nombre de points 'v'?",'nbre_pts')'
  96.     if result='' then return ""
  97.     else f=f||result
  98.     'ASKTEXT("Quelle est la fréquence de début?","'freq_debut'")'
  99.     if result='' then return ""
  100.     else f=f||" "||result
  101.     freq_fin=strip(freq_fin)
  102.     'ASKTEXT("Quelle est la fréquence de fin?","'freq_fin'")'
  103.     if result='' then return ""
  104.     else analyse="AC "||f||' '||result
  105.     return analyse
  106.     end
  107.     return ''
  108.  
  109. edition_analyse_DC:
  110.     parse arg type source vmin vmax pas
  111.     if type='DC' then do
  112.     'UNMARK(-1):MESSAGE("Vous devez maintenant"+CHR(10)+"sélectionner une source")'
  113.     'PICKOBJ("Sélectionnez le générateur à faire varier.")'
  114.     f=result
  115.     if f<1 then return ''
  116.     'MARK('f'):TYPE('f')'
  117.     if result=5 then 'READTEXT('f')'
  118.     else 'READTEXT(GETREF('f'))'
  119.     f=result
  120.     'V0=ASKTEXT("Quelle est la valeur de départ?","'vmin'")'
  121.     if result='' then return ''
  122.     else f=f||' '||result
  123.     'V1=ASKTEXT("Quelle est la valeur finale.","'vmax'")'
  124.     if result='' then return ''
  125.     else f=f||' '||result
  126.     pas=strip(pas)
  127.     'ASKTEXT("Quel est l''incrément?","'pas'")'
  128.     if result='' then return ''
  129.     else analyse="DC "||f||' '||result
  130.     return analyse
  131.     end
  132.     return ''
  133.  
  134. edition_analyse_TRAN:
  135.     parse arg type pas tmax tdebut
  136.     if upper(type)='TRAN' then do
  137.     'ASKTEXT("Temps de simulation?","'tmax'")'
  138.     tmax=strip(result)
  139.     if tmax='' then return ''
  140.     pas=strip(pas)
  141.     'ASKTEXT("Pas de simulation?","'pas'")'
  142.     pas=strip(result)
  143.     if pas='' then return ''
  144.     tdebut=strip(tdebut)
  145.     'ASKTEXT("Temps de début de la simulation?","'tdebut'")'
  146.     tdebut=strip(result)
  147.     if tdebut='' then return ''
  148.     analyse="tran "||pas||" "||tmax||" "||tdebut
  149.     return analyse
  150.     end
  151.     return ''
  152.  
  153. /* Traitement des erreurs, interruption du programme */
  154. syntax:
  155. erreur=RC
  156. 'MESSAGE("Erreur de syntaxe"+CHR(10)+"en ligne 'SIGL'"+CHR(10)+"'errortext(erreur)'")'
  157. exit
  158.  
  159. error:
  160. 'MESSAGE("Erreur en ligne 'SIGL'")'
  161. exit
  162.